package cc.rengu.igas.mcps.core.realize;

import cc.rengu.igas.mcps.common.entity.TermKey;
import cc.rengu.oltp.service.common.enums.PinTypeEnum;

public interface PosHsmService {
    /**
     * 校验密码
     *
     * @param instId        多法人标识
     * @param cardNo        卡号
     * @param pinType       密码类型
     * @param pinData       加密密码
     * @param pinCheckValue 密码校验值
     * @throws Exception 异常
     */
    void checkPin(String instId, String cardNo, PinTypeEnum pinType, String pinData, String pinCheckValue) throws Exception;

    /**
     * 转加密
     *
     * @param instId       法人行
     * @param mchntNo      商户号
     * @param termNo       终端号
     * @param cardNo       卡号
     * @param dstChannelId 目标通道标识
     * @param pinData      卡密码
     * @return 新的密码
     * @throws Exception 异常
     */
    String transPin(String instId, String mchntNo, String termNo, String cardNo, String dstChannelId, String pinData) throws Exception;

    /**
     * 加密数据解密
     *
     * @param tdkTermkey 终端密钥
     * @param encData    加密数据
     * @return 解密后的数据
     * @throws Exception 异常
     */
    String descriptData(TermKey tdkTermkey, String encData) throws Exception;
}
